স্প্রিং ডেটা JPA-তে Query Methods হলো এমন একটি পদ্ধতি যেখানে মেথডের নাম অনুসারে ডেটাবেজ কোয়েরি স্বয়ংক্রিয়ভাবে তৈরি হয়। এটি ডেভেলপারদের ম্যানুয়াল SQL কোয়েরি লেখার প্রয়োজনীয়তা দূর করে এবং সহজভাবে ডেটা অনুসন্ধান, হালনাগাদ বা মুছে ফেলার সুযোগ দেয়।
Query Methods কীভাবে কাজ করে?
স্প্রিং ডেটা JPA-এর একটি শক্তিশালী বৈশিষ্ট্য হলো এটি মেথডের নাম বিশ্লেষণ করে ডেটাবেজ কোয়েরি তৈরি করতে পারে। মেথডের নামের কাঠামো অনুযায়ী স্প্রিং ডেটা JPA নির্ধারণ করে কী ধরণের কোয়েরি তৈরি করতে হবে।
মূল কাঠামো:
findBy[Property][Condition]
findBy: এটি ডেটা খোঁজার নির্দেশ দেয়।[Property]: Entity ক্লাসের একটি ফিল্ড।[Condition]: নির্দিষ্ট শর্ত যেমন Equals, Like, GreaterThan ইত্যাদি।
Query Methods এর উদাহরণ
১. সরল উদাহরণ
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
public interface ProductRepository extends JpaRepository<Product, Long> {
List<Product> findByName(String name); // প্রোডাক্ট নাম অনুযায়ী খুঁজবে
}
উপরের উদাহরণে, findByName মেথডের মাধ্যমে name ফিল্ডের ভিত্তিতে ডেটা রিটার্ন করা হবে। স্প্রিং ডেটা JPA এই মেথডের জন্য SQL কোয়েরি স্বয়ংক্রিয়ভাবে তৈরি করবে:
SELECT * FROM product WHERE name = ?;
২. শর্তযুক্ত উদাহরণ
List<Product> findByPriceGreaterThan(Double price); // নির্ধারিত মূল্যের চেয়ে বেশি প্রোডাক্ট খুঁজবে
উপরের মেথড অনুযায়ী SQL কোয়েরি হবে:
SELECT * FROM product WHERE price > ?;
৩. একাধিক শর্ত
List<Product> findByNameAndPrice(String name, Double price); // নাম ও মূল্য একসাথে শর্ত দিয়ে খুঁজবে
SQL কোয়েরি:
SELECT * FROM product WHERE name = ? AND price = ?;
৪. লাইক (Like) অপারেটর ব্যবহার
List<Product> findByNameContaining(String keyword); // নির্দিষ্ট শব্দের উপস্থিতি খুঁজবে
SQL কোয়েরি:
SELECT * FROM product WHERE name LIKE %?%;
৫. সাজানোর (Sorting) জন্য মেথড
List<Product> findByNameOrderByPriceAsc(String name); // নাম অনুযায়ী সাজানো তালিকা প্রদান করবে
SQL কোয়েরি:
SELECT * FROM product WHERE name = ? ORDER BY price ASC;
Query Methods এর মাধ্যমে কাস্টম কোয়েরি
স্প্রিং ডেটা JPA-তে কাস্টম কোয়েরি তৈরি করার জন্য @Query অ্যানোটেশন ব্যবহার করা হয়।
উদাহরণ:
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
public interface ProductRepository extends JpaRepository<Product, Long> {
@Query("SELECT p FROM Product p WHERE p.name = :name AND p.price > :price")
List<Product> findProductsByNameAndPrice(
@Param("name") String name,
@Param("price") Double price
);
}
Query Methods এর সুবিধা
- কোড স্বচ্ছতা: কোয়েরি মেথডের নামই বুঝিয়ে দেয় এটি কী কাজ করবে।
- স্বয়ংক্রিয় কোয়েরি জেনারেশন: ডেভেলপারদের SQL কোয়েরি লেখার প্রয়োজন নেই।
- সহজ রক্ষণাবেক্ষণ: কোড পরিবর্তন করলে SQL পরিবর্তনের দরকার পড়ে না।
- কাস্টম কোয়েরি সমর্থন: বিশেষ শর্তযুক্ত কোয়েরি তৈরির জন্য @Query ব্যবহারের সুযোগ।
Query Methods এর চেকলিস্ট
- মেথডের নাম সঠিকভাবে এবং স্পষ্টভাবে তৈরি করতে হবে।
- Entity ফিল্ডের নাম অনুসারে মেথডের নাম ব্যবহার করতে হবে।
- প্রয়োজন হলে কাস্টম কোয়েরি @Query ব্যবহার করতে হবে।
সারসংক্ষেপ
স্প্রিং ডেটা JPA-এর Query Methods ডেটাবেস অপারেশনকে আরও সহজ এবং কার্যকর করে তোলে। মেথডের নাম অনুযায়ী স্বয়ংক্রিয় SQL কোয়েরি তৈরি হওয়ায় ডেভেলপারদের কাজের সময় সাশ্রয় হয় এবং ডেটাবেস ইন্টিগ্রেশন আরও মসৃণ হয়। Query Methods এবং কাস্টম কোয়েরি উভয়ই ডেটা ম্যানিপুলেশনে উন্নত সুবিধা প্রদান করে।
Read more